package com.qingzhou.web.repository.entity;

import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.Table;
import com.qingzhou.common.web.domain.BaseEntity;
import com.qingzhou.web.service.impl.convert.AdjustDetailConverter;
import com.qingzhou.web.service.impl.convert.DictConverter;
import com.qingzhou.web.service.impl.convert.DictParent;
import com.qingzhou.web.service.impl.convert.PreAdjustDetailConverter;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.Date;

/**
 * 治疗信息 对象
 * @author xm
 */
@EqualsAndHashCode(callSuper = true)
@Data
@Table(value = "edc_treatment")
public class TreatmentEntity extends BaseEntity {
    private static final long serialVersionUID = 1L;

    @Id
    private Long id;

    @ApiModelProperty(value = "状态")
    private String status;

    @ApiModelProperty(value = "患者编号")
    private String patientCode;

    // 新辅助治疗（表头）
    @ApiModelProperty(value = "新辅助治疗方式", notes = "字典 pre_therapy_way")
    @DictParent("pre_therapy_way")
    private String preMode;

    @ApiModelProperty(value = "新辅助治疗药物")
    private String preTreatmentDrugs;

    @ApiModelProperty(value = "新辅助治疗周期")
    private String preCycle;

    @ApiModelProperty(value = "新辅助治疗开始时间")
    @DateTimeFormat("yyyy年MM月dd日")
    private Date preStartTime;

    @ApiModelProperty(value = "新辅助治疗结束时间")
    @DateTimeFormat("yyyy年MM月dd日")
    private Date preEndTime;

    @ApiModelProperty(value = "新辅助治疗持续时间")
    private String preDuration;

    @ApiModelProperty(value = "第8版新辅助治疗T分期")
    private String preTblStaging;
    @ApiModelProperty(value = "第8版新辅助治疗N分期")
    private String preNblStaging;
    @ApiModelProperty(value = "第8版新辅助治疗M分期")
    private String preMblStaging;
    /*@ApiModelProperty(value = "新辅助治疗分期版本号", notes = "字典 stage_version_dict")
    @DictParent("stage_version_dict")
    private String preStageVersion;*/
    @ApiModelProperty(value = "第8版新辅助治疗TNM分期",notes="字典 tnm_stage_dict")
    @DictParent("tnm_stage_dict")
    private String preTnm;

    @ApiModelProperty(value = "第9版新辅助治疗T分期")
    private String preTblNineStaging;
    @ApiModelProperty(value = "第9版新辅助治疗N分期")
    private String preNblNineStaging;
    @ApiModelProperty(value = "第9版新辅助治疗M分期")
    private String preMblNineStaging;
    @ApiModelProperty(value = "第9版新辅助治疗TNM分期",notes="字典 tnm_stage_dict")
    @DictParent("tnm_stage_dict")
    private String preNineTnm;

    @ApiModelProperty(value = "新辅助治疗不良反应情况（AE）")
    private String preAdverseEffect;

    @ApiModelProperty(value = "新辅助治疗费用")
    private String preTreatmentCost;

    @ApiModelProperty(value = "新辅助治疗临床影像学疗效")
    private String preCurativEffect;

    @ApiModelProperty(value = "新辅助治疗病理反应疗效")
    private String prePathologyEffect;

    @ApiModelProperty(value = "新辅助随访期间治疗方案",notes = "json数组.包含调整方式、调整日期、调整原因、调整后方案。参考AdjustDetailVo.class")
    @ExcelProperty(value = {"新辅助治疗","随访期间治疗方案"}, converter = PreAdjustDetailConverter.class)
    private String preAdjustDetail;

    @ApiModelProperty(value = "新辅助前治疗生活质量评分")
    private String preLifeFrontEvaluation;

    @ApiModelProperty(value = "新辅助治疗生活质量评分")
    private String preLifeEvaluation;

    // 辅助治疗-LandMark（表头）
    @ApiModelProperty(value = "辅助治疗决策依据", notes = "字典 sys_yes_no")
    @DictParent("ad_basis_dict")
    private String adBasis;

    @ApiModelProperty(value = "辅助治疗是否治疗", notes = "字典 sys_yes_no")
    @DictParent("sys_yes_no")
    private String postIsTreatment;

    @ApiModelProperty(value = "辅助治疗方式", notes = "字典 post_therapy_way")
    @DictParent("post_therapy_way")
    private String postMode;

    @ApiModelProperty(value = "辅助治疗药物")
    private String postTreatmentDrugs;

    @ApiModelProperty(value = "辅助治疗周期")
    private String postCycle;

    @ApiModelProperty(value = "辅助治疗开始时间")
    @DateTimeFormat("yyyy年MM月dd日")
    private Date postStartTime;

    @ApiModelProperty(value = "辅助治疗结束时间")
    @DateTimeFormat("yyyy年MM月dd日")
    private Date postEndTime;

    @ApiModelProperty(value = "辅助治疗持续时间")
    private String postDuration;

    @ApiModelProperty(value = "辅助治疗不良反应情况（AE）")
    private String postAdverseEffect;

    @ApiModelProperty(value = "辅助治疗费用")
    private String postTreatmentCost;

    @ApiModelProperty(value = "辅助治疗前生活质量评分")
    private String postLifeFrontEvaluation;

    @ApiModelProperty(value = "辅助治疗生活质量评分")
    private String postLifeEvaluation;

    // 辅助治疗-随访（表头）
    @ApiModelProperty(value = "辅助治疗决策依据（辅助治疗-随访（开始））", notes = "字典 sys_yes_no")
    @DictParent("ad_basis_dict")
    private String  postFollowAdBasis;

    @ApiModelProperty(value = "辅助治疗是否治疗（辅助治疗-随访（开始））", notes = "字典 sys_yes_no")
    @DictParent("sys_yes_no")
    private String postFollowIsTreatment;

    @ApiModelProperty(value = "辅助治疗方式（辅助治疗-随访（开始））", notes = "字典 post_therapy_way")
    @DictParent("post_therapy_way")
    private String postFollowMode;

    @ApiModelProperty(value = "辅助治疗药物（辅助治疗-随访（开始））")
    private String postFollowTreatmentDrugs;

    @ApiModelProperty(value = "辅助治疗周期（辅助治疗-随访（开始））")
    private String postFollowCycle;

    @ApiModelProperty(value = "辅助治疗开始时间（辅助治疗-随访（开始））")
    @DateTimeFormat("yyyy年MM月dd日")
    private Date postFollowStartTime;

    @ApiModelProperty(value = "辅助治疗结束时间（辅助治疗-随访（开始））")
    @DateTimeFormat("yyyy年MM月dd日")
    private Date postFollowEndTime;

    @ApiModelProperty(value = "辅助治疗持续时间（辅助治疗-随访（开始））")
    private String postFollowDuration;

    @ApiModelProperty(value = "辅助治疗不良反应情况（AE）（辅助治疗-随访（开始））")
    private String postFollowAdverseEffect;

    @ApiModelProperty(value = "辅助治疗费用（辅助治疗-随访（开始））")
    private String postFollowTreatmentCost;

    @ApiModelProperty(value = "辅助治疗调整明细（辅助治疗-随访（开始））",notes = "json数组.包含调整方式、调整日期、调整原因、调整后方案。参考AdjustDetailVo.class")
    @ExcelProperty(value = {"辅助治疗","治疗方案"}, converter = AdjustDetailConverter.class)
    private String postFollowAdjustDetail;

    @ApiModelProperty(value = "辅助治疗前生活质量评分（辅助治疗-随访（开始））")
    private String postFollowLifeFrontEvaluation;

    @ApiModelProperty(value = "辅助治疗生活质量评分（辅助治疗-随访（开始））")
    private String postFollowLifeEvaluation;

    // 复发/转移后治疗（表头）
    @ApiModelProperty(value = "复发/转移后治疗是否治疗", notes = "字典 sys_yes_no")
    @DictParent("sys_yes_no")
    private String lateIsTreatment;

    @ApiModelProperty(value = "复发/转移后治疗方式", notes = "字典 late_therapy_way")
    @DictParent("late_therapy_way")
    private String lateMode;

    @ApiModelProperty(value = "复发/转移后治疗药物")
    private String lateTreatmentDrugs;

    @ApiModelProperty(value = "复发/转移后治疗周期")
    private String lateCycle;

    @ApiModelProperty(value = "复发/转移后治疗开始时间")
    @DateTimeFormat("yyyy年MM月dd日")
    private Date lateStartTime;

    @ApiModelProperty(value = "复发/转移后治疗结束时间")
    @DateTimeFormat("yyyy年MM月dd日")
    private Date lateEndTime;

    @ApiModelProperty(value = "复发/转移后治疗持续时间")
    private String lateDuration;

    @ApiModelProperty(value = "复发/转移后治疗不良反应情况（AE）")
    private String lateAdverseEffect;

    @ApiModelProperty(value = "复发/转移后治疗费用")
    private String lateTreatmentCost;

    @ApiModelProperty(value = "复发/转移后治疗最佳疗效", notes = "字典 late_curativ_effect_dict")
    @DictParent("late_curativ_effect_dict")
    private String lateCurativEffect;

    @ApiModelProperty("数据检查原因")
    private String editReason;

    @ApiModelProperty("终止原因")
    private String stopReason;

}
